package com.gxa.jjty.cjr.service;

import com.gxa.jjty.core.exception.BusinessException;
import com.gxa.jjty.core.pojo.ServerAndTorderVo;
import com.gxa.jjty.core.pojo.Torder;
import com.gxa.jjty.core.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * @author NITRO
 */
public interface TorderService extends BaseService<Torder> {
    /**
     * 添加订单1
     * @param torder
     */
     void  addTorder1(Torder torder);

    /**
     * 添加订单2
     * @param torder
     */
    void  addTorder2(Torder torder);

    /**
     * 获取待支付订单信息
     * @return
     */
    List<ServerAndTorderVo> getTorderBePaid(String number);

    /**
     * 取消订单
     * @param number：订单编号
     */
    void deleteTorder(String number,String cancelRemark) throws BusinessException;

    /**
     * (免密)支付订单
     * @param number：订单编号
     */
    void updateTorderFree(String number);
    /**
     * (微信，支付宝)支付订单
     * @param number：订单编号
     */
    void updateTorder(String number);

    /**
     * 查询已完成订单
     * @param phone:操作用户手机号
     * @param number:订单号
     * @return
     */
    List<ServerAndTorderVo>  selectTorder(String phone,String number);

    /**
     * 查询当前操作用户已被陪护员接单的订单
     * @param phone:操作用户手机号
     * @return
     */
    List<ServerAndTorderVo>  getTorderList(String phone);

    /**
     * 查询当前操作用户陪护员服务中的订单
     * @param phone:操作用户手机号
     * @return
     */
    List<ServerAndTorderVo>  getTorderListServiceIng(String phone);

    /**
     * 退款
     * @param number：退款的订单号
     *
     */
    void  ToderRefund(String number,String cancelRemark) throws BusinessException;

    /**
     * 查询该用户全部订单信息
     * @return
     */
    List<ServerAndTorderVo> selectAllTorderList(String phone);

    /**
     * 查询退款失败用户
     * @param phone
     * @return
     */
    List<ServerAndTorderVo> selectRefundFalse(String phone);
    /**
     * 查询退款成功用户
     * @param phone
     * @return
     */
    List<ServerAndTorderVo> selectRefundTrue(String phone);
    /**
     * 查询退款中用户
     * @param phone
     * @return
     */
    List<ServerAndTorderVo> selectRefunding(String phone);

    /**
     * 根据订单号查询订单
     * @param number
     * @return
     */
    List<Torder> selectByNumbers(String number);
    /**
     * 查询退款失败用户
     * @param orderNumber
     * @return
     */
    List<ServerAndTorderVo> selectRefundFalseByOrderNumber(String orderNumber);
    /**
     * 查询退款成功用户
     * @param orderNumber
     * @return
     */
    List<ServerAndTorderVo> selectRefundTrueByOrderNumber(String orderNumber);

    /**
     * 查询等待系统分配的具体订单
     * @param orderNumber
     * @return
     */
    List<ServerAndTorderVo> selectPayings(String orderNumber);
    /**
     * 查询服务中的具体订单
     * @param orderNumber
     * @return
     */
    List<ServerAndTorderVo> selectServering(String orderNumber);

    /**
     * 确认完成订单
     * @param torder
     */
    void sureTorderFinshed(Torder torder);
}
